home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib14.dsk / FLY AWAY.bas < prev    next >
BASIC Source File  |  2023-02-26  |  9KB  |  89 lines

  1. 10  REM **********************
  2. 11  REM *   F L Y  A W A Y   *
  3. 12  REM * BY DARYL L. SCOTT  *
  4. 13  REM * COPYRIGHT (C) 1983 *
  5. 14  REM * BY MICROSPARC, INC *
  6. 15  REM * LINCOLN, MA. 01773 *
  7. 16  REM **********************
  8. 100  GOTO 810
  9. 110 PA =  FN A(0): IF PA < >P0  THEN  HCOLOR= 3: ROT= 32: XDRAW 5 AT 34,P0:P0 = PA: DRAW 5 AT 34,P0: ROT= 1
  10. 120 PB =  FN B(0): IF P1 < >PB  THEN  IF N2 = 0  THEN  HCOLOR= 3: XDRAW 5 AT 245,P1:P1 = PB: DRAW 5 AT 245,P1
  11. 130  RETURN 
  12. 140  GOSUB 110: HCOLOR= 0: DRAW SH AT XP,YP: HCOLOR= 3:XP = XP -3 + RND(1) *6 +XI:YP = YP + RND(1) *4 +YI +6 -SH: IF YP <2  THEN YP = 2: GOTO 280
  13. 150  POKE 801,12: POKE 806,9: IF YP <125  THEN 190
  14. 160  IF XP >109  AND XP <133  THEN  FOR X = 1 TO 7: HCOLOR= 3:XP = XP -10:YP = YP -15: ROT= 48: DRAW 10 AT 130,154: ROT= 0: DRAW SH AT XP,YP: HCOLOR= 0: ROT= 45: DRAW 10 AT 130,154: ROT= 0: DRAW SH AT XP,YP: CALL 800: NEXT : RETURN 
  15. 170  IF XP =  >133  AND XP <156  THEN  FOR X = 1 TO 7: HCOLOR= 3:XP = XP +10:YP = YP -15: ROT= 48: DRAW 10 AT 143,154: ROT= 0: DRAW SH AT XP,YP: HCOLOR= 0: ROT= 45: DRAW 10 AT 143,154: ROT= 0: DRAW SH AT XP,YP: CALL 800: NEXT : RETURN 
  16. 180  IF YP >144  THEN YP = 144
  17. 190  IF XP >34  AND XP <225  THEN 280
  18. 200  IF YP >P0 -27  AND YP <P0 +1  AND XP < = 34  THEN Y1 = P0 -9:Y2 = Y1 -4:X1 = 8:X2 = X1: HCOLOR= 3: ROT= 32: XDRAW 5 AT 34,P0: ROT= 1: GOSUB 260:S1 = S1 +SC:F1 = 0: ROT= 32: DRAW 5 AT 34,P0: ROT= 1: POP : GOTO 310
  19. 210  IF YP >P1 -15  AND YP <P1 +13  AND XP =  >225  THEN Y1 = P1 +7:Y2 = Y1 +4:X1 = 270:X2 = 270: HCOLOR= 3: XDRAW 5 AT 245,P1: ROT= 32: GOSUB 260: ROT= 0:S0 = S0 +SC:F1 = 0: DRAW 5 AT 245,P1: POP : GOTO 310
  20. 220  IF XP >9  AND XP <246  THEN 280
  21. 230  IF YP >144  THEN YP = 144
  22. 240  IF XP < = 9  THEN Y1 = YP +4:Y2 = Y1 -4:X1 = 8:X2 = X1: GOSUB 260:S1 = S1 +SC:F1 = 0: POP : GOTO 310
  23. 250 Y1 = YP +12:Y2 = Y1 +4:X1 = 270:X2 = X1: ROT= 32: GOSUB 260: ROT= 0:S0 = S0 +SC:F1 = 0: POP : GOTO 310
  24. 260  DRAW 10 AT X1,Y1: POKE 801,40: POKE 806,17: CALL 800: XDRAW 10 AT X1,Y1: POKE 806,13: CALL 800: FOR X = 1 TO 3: DRAW 11 AT X2,Y2: POKE 806,17: CALL 800: XDRAW 11 AT X2,Y2: POKE 806,13: CALL 800: NEXT 
  25. 270 SC = (Y1 <40) *400 +(Y1 <80  AND Y1 >39) *300 +(Y1 <120  AND Y1 >79) *200 +(Y1 >119) *100: RETURN 
  26. 280  DRAW SH AT XP,YP: RETURN 
  27. 290  HOME : VTAB 21: HTAB 2: INVERSE : PRINT " P L A Y E R # 1      P L A Y E R # 2 ";: NORMAL : PRINT "    ENERGY=";EL; TAB( 26)"ENERGY=";EL: PRINT "   BLASTS=0"; TAB( 26)"BLASTS=0": CALL  -868
  28. 300  PRINT "    SCORE=0               SCORE=0";: INVERSE : VTAB 22: HTAB 2: PRINT " ";: HTAB 39: PRINT " ": HTAB 2: PRINT " ";: HTAB 39: PRINT " ": HTAB 2: PRINT " ";: HTAB 39: PRINT " ";: NORMAL : IF FIRST  THEN 630
  29. 310  GOSUB 110:X =  FRE(0): IF E0 >EL  THEN E0 = EL
  30. 320  IF E0 < = 0  OR N0 = 1  THEN E0 = 0:N0 = 1
  31. 330  IF E1 >EL  THEN E1 = EL
  32. 340  IF E1 < = 0  OR N1 = 1  THEN E1 = 0:N1 = 1
  33. 350  VTAB 22: POKE 36,10: PRINT "     ";: POKE 36,32: PRINT "     ";: VTAB 22: POKE 36,10: PRINT E0;: POKE 36,32: PRINT E1: POKE 36,10: PRINT B0;: POKE 36,32: PRINT B1: POKE 36,10: PRINT S0;: POKE 36,32: PRINT S1;
  34. 360  IF N0 = 1  AND N1 = 1  THEN X =  PEEK(49168): GOTO 580
  35. 370  IF N1 = 1  AND N2 = 1  THEN  XDRAW 5 AT 245,P1:P1 = 148: DRAW 5 AT 245,P1: GOTO 420
  36. 380  IF N2 = 0  OR LV < RND(1) *11  THEN 420
  37. 390  HCOLOR= 3: XDRAW 5 AT 245,P1:P1 = YP +2 -(23 -LV) + RND(1) *2 *(23 -LV): IF P1 >148  THEN P1 = 148
  38. 400  IF P1 <2  THEN P1 = 2
  39. 410  DRAW 5 AT 245,P1
  40. 420  GOSUB 110: IF F1 = 0  THEN XP = 130:YP = 5:LV = LV +1:LV = (LV <11) *LV +10 *(LV >10):SH =  INT( RND(1) *4) +1: HCOLOR= 3: DRAW SH AT XP,YP:F1 = 1: IF N2 = 1  AND N1 = 0  THEN 390
  41. 430  IF  PEEK( -16287) < = 127  OR N0 = 1  THEN XI = 0:YI = 0: GOSUB 140: GOSUB 110:E0 = E0 +EP *(N1 = 0): GOTO 500
  42. 440 B0 = B0 +1:E0 = E0 -EM: HCOLOR= 6: HPLOT 35,P0 -5 TO 43,P0 -5: HPLOT 36,P0 -6 TO 39,P0 -8: HPLOT 36,P0 -4 TO 39,P0 -2: POKE 801,13: POKE 806,30: POKE 839,10: POKE 845,21: CALL 800: CALL 832
  43. 450  IF P0 -18 >YP  OR P0 +6 <YP  THEN XI = 0:YI = 0: GOTO 490
  44. 460  IF YP <P0 -12  THEN XI =  FN D(XP):YI =  -10: GOTO 490
  45. 470  IF YP <P0  THEN XI =  FN C(XP):YI = 0: GOTO 490
  46. 480 YI =  +10:XI =  FN D(XP)
  47. 490  HCOLOR= 0: HPLOT 35,P0 -5 TO 43,P0 -5: HPLOT 36,P0 -6 TO 39,P0 -8: HPLOT 36,P0 -4 TO 39,P0 -2: GOSUB 140: GOSUB 110
  48. 500  IF N2 = 1  AND (P1 >YP -37  AND P1 <YP +37)  AND N1 = 0  THEN 520
  49. 510  IF  PEEK( -16286) < = 127  OR N2 = 1  OR N1 = 1  THEN NI = 0:YI = 0: GOSUB 140:E1 = E1 +EP *(N0 = 0): GOTO 310
  50. 520 B1 = B1 +1:E1 = E1 -EM: HCOLOR= 6: HPLOT 243,P1 +5 TO 235,P1 +5: HPLOT 242,P1 +6 TO 239,P1 +8: HPLOT 242,P1 +4 TO 239,P1 +2: POKE 801,13: POKE 806,30: POKE 839,10: POKE 845,21: CALL 800: CALL 832
  51. 530  IF P1 +18 <YP  OR P1 -6 >YP  THEN XI = 0:YI = 0: GOTO 570
  52. 540  IF YP <P1  THEN XI =  FN F(XP):YI =  -10: GOTO 570
  53. 550  IF YP <P1 +12  THEN XI =  FN E(XP):YI = 0: GOTO 570
  54. 560 YI =  +10:XI =  FN F(XP)
  55. 570  HCOLOR= 0: HPLOT 243,P1 +5 TO 235,P1 +5: HPLOT 242,P1 +6 TO 239,P1 +8: HPLOT 242,P1 +4 TO 239,P1 +2: GOSUB 140: GOTO 310
  56. 580  IF XP >9  AND XP <246  AND YP <145  AND YP >2  THEN  HCOLOR= 0: DRAW SH AT XP,YP
  57. 590  HTAB 1: VTAB 24: PRINT : VTAB 21: HTAB 2: INVERSE : IF S0 >S1  THEN  PRINT " PLAYER#1 WINS!       PLAYER#2 LOSES!";
  58. 600  IF S1 >S0  THEN  PRINT " PLAYER#1 LOSES!       PLAYER#2 WINS!";
  59. 610  IF S0 = S1  THEN  PRINT " PLAYER#1   ! TIE  GAME !   PLAYER#2 ";
  60. 620  FOR X = 1 TO 4: POKE 801,0: POKE 806,10: CALL 800: POKE 801,200: POKE 806,15: CALL 800: NEXT 
  61. 630  VTAB 24: HTAB 2: INVERSE : PRINT " <<INSTRUCTIONS? (Y,OR 1/2 PLAYERS)>> ";: NORMAL :X =  PEEK(49168):PX = 124:PY = 2:SH = 12: HCOLOR= 3
  62. 640 KEY =  PEEK(49152): IF KEY =  >128  THEN A$ =  CHR$(KEY -128): GOTO 720
  63. 650  DRAW SH AT PX,PY:NX = PX -10 + RND(1) *20:NY = PY +5 + RND(1) *5: HCOLOR= 0: DRAW SH AT PX,PY: HCOLOR= 3:PX = NX:PY = NY: IF PX <10  OR PX >215  OR PY >113  THEN PX = 124:PY = 2
  64. 660  IF N5 <5  THEN  VTAB 24: HTAB 3: INVERSE : PRINT "<<INSTRUCTIONS? (Y,OR 1/2 PLAYERS)>>";: NORMAL :N5 = N5 +1: GOTO 640
  65. 670  IF N5 <10  THEN  VTAB 24: HTAB 2: INVERSE : PRINT " BY DARYL L.SCOTT,  C1983 MICRO-SPARC ";: NORMAL :N5 = N5 +1: GOTO 640
  66. 680 N5 = 0: GOTO 640
  67. 690  IF KEY = 206  THEN E0 = EL:E1 = EL:B0 = 0:B1 = 0:S0 = 0:S1 = 0:FIRST = 0:N0 = 0:N1 = 0:F1 = 0: GOTO 290
  68. 700 X =  PEEK(49168): GET A$: PRINT "";: IF A$ < >"1"  AND A$ < >"2"  AND A$ < >"0"  THEN 700
  69. 710 FIRST = 1: IF A$ = "0"  THEN  POKE  -16300,0: POKE  -16304,0: POKE  -16297,0: GOTO 290
  70. 720 N2 = 0: IF A$ = "1"  THEN LV = 1:N2 = 1
  71. 730  IF A$ = "1"  OR A$ = "2"  THEN KEY = 206: POKE  -16300,0: POKE  -16304,0: POKE  -16297,0: GOTO 690
  72. 740  IF A$ = "Y"  THEN 760
  73. 750 X =  PEEK(49168): GOTO 640
  74. 760  TEXT : HOME : HTAB 11: INVERSE : PRINT "<< F L Y  A W A Y >>": NORMAL : PRINT : PRINT "BY DARYL L.SCOTT, C1983 MICRO-SPARC INC": PRINT 
  75. 770  PRINT "   THE GOAL IS TO 'BLOW' THE FALLING": PRINT "OBJECTS INTO THE OPPONENT'S WALL.  THE": PRINT "HIGHER THE OBJECT IS, THE MORE POINTS.": PRINT "THE FOUR TYPES OF OBJECTS ARE BALLOONS": PRINT "LEAVES, FEATHERS AND LINT BALLS.": PRINT 
  76. 780  PRINT "   EACH BLAST OF YOUR PADDLE-OPERATED": PRINT "AIR GUN WILL USE ENERGY.  IF NOT USED,": PRINT "IT WILL SLOWLY RECHARGE.  A PLAYER IS": PRINT "OUT WHEN HIS ENERGY LEVEL IS ZERO. THE": PRINT "GAME IS OVER WHEN BOTH HAVE NO ENERGY.": PRINT 
  77. 790  PRINT "   AT THE BOTTOM OF THE SCREEN IS A": PRINT "TRIANGULAR-SHAPED 'BLOWER.'  WHEN ANY": PRINT "OBJECTS COME TOO NEAR, THE BLOWER WILL": PRINT "DRIVE THEM TO THE TOP OF THE SCREEN.": PRINT 
  78. 800  PRINT "   PRESSING CTRL-C RESTARTS THE GAME.": PRINT : INVERSE : PRINT "PRESS <1> OR <2> PLAYERS, <0> FOR DEMO";: NORMAL : GOTO 700
  79. 810  PRINT  CHR$(4);"BLOADFLY AWAY SHAPE,A$6000": POKE 232,0: POKE 233,96: ONERR  GOTO 840
  80. 820  FOR X = 800 TO 813: READ Y: POKE X,Y: NEXT : FOR X = 832 TO 848: READ Y: POKE X,Y: NEXT : DATA 162,48,141,48,192,169,16,32,168,252,202,208,245,96,162,1,141,48,192,138,105,56,32,168,252,232,224,21,208,242,96
  81. 830  DATA 18,250,24,250,23,75,22,72,19,75,28,250,24,250,23,75,22,75,19,75,28,250,24,250,23,100,22,100,23,100,19,250
  82. 840 EP = 50:EM = 500:EL = 50000:E0 = EL:E1 = EL:FIRST = 1: DEF  FN A(P) = ( PDL(0) +20)/255 *147: DEF  FN B(P) = ( PDL(1) +2)/255 *147: POKE 202, PEEK(78)
  83. 850  DEF  FN C(XP) = (XP <93) *42 +(XP =  >93  AND XP <186) *37 +(XP =  >186) *32: DEF  FN D(XP) = (XP <93) *37 +(XP =  >93  AND XP <186) *32 +(XP =  >186) *27
  84. 860  DEF  FN E(XP) = (XP <93) * -32 +(XP =  >93  AND XP <186) * -37 +(XP =  >186) * -42: DEF  FN F(XP) = (XP <93) * -27 +(XP =  >93  AND XP <186) * -32 +(XP =  >186) * -37
  85. 870  HOME : HGR : HCOLOR= 2: ROT= 1: SCALE= 1: HPLOT 0,0 TO 129,0: HPLOT 151,0 TO 278,0 TO 278,159 TO 0,159 TO 0,0: HPLOT 123,1 TO 129,1: HPLOT 151,1 TO 157,1
  86. 880  HCOLOR= 5: HPLOT 129,158 TO 140,150 TO 151,158
  87. 890  HCOLOR= 3: HPLOT 8,1 TO 8,159: HPLOT 270,1 TO 270,159: FOR X = 39 TO 159  STEP 40: HPLOT 1,X TO 7,X: HPLOT 271,X TO 277,X: NEXT 
  88. 900 SH = 9: FOR Y = 8 TO 128  STEP 40: DRAW SH AT 1,Y: DRAW SH AT 271,Y:SH = SH -1: NEXT :P0 = 79:P1 = 79
  89. 910  HCOLOR= 3: ROT= 32: DRAW 5 AT 34,P0: ROT= 1: DRAW 5 AT 245,P1: GOSUB 110: GOTO 290